팩터 리스크 패리티 EMP
한국 ETF 시장의 시간가변 팩터 노출과 2단계 포트폴리오 복제 전략
요약
본 보고서는 한국 ETF 시장(N=194종목, 2020–2023)에서 롤링 OLS를 통해 ETF별 시간가변(time-varying) 팩터 노출을 추정하고, 이를 바탕으로 2단계 Factor Risk Parity ETF Managed Portfolio(FRP-EMP) 전략을 구성한 결과를 정리한다.
JKP 13개 팩터 테마와 한국 시장 수익률(M=14)을 설명변수로, 120거래일 롤링 윈도우 OLS 회귀를 수행하여 ALPHA, BETAS, RESID 배열을 산출한다. 이를 기반으로 두 단계의 최적화를 적용한다: Stage 1에서 팩터 공분산 행렬 위에서 log-barrier Factor Risk Parity를 풀어 팩터 목표 노출 \(\phi^*\)를 산출하고, Stage 2에서 Constrained QP로 \(\phi^*\)를 복제하는 ETF 비중 \(w^*\)를 탐색한다.
백테스트(2020–2023, 월별 리밸런싱, 42회) 결과, FRP-EMP는 Sharpe Ratio 0.952, MDD −11.58%를 달성하여, 동일가중 EW-EMP(Sharpe 0.564, MDD −29.27%) 대비 리스크 조정 성과에서 명확한 우위를 보인다.
1 서론
1.1 연구 배경 및 동기
ETF(Exchange-Traded Fund) 기반 패시브 운용에서 팩터 노출 분석은 포트폴리오 성과 귀인(attribution)의 핵심이다. 그러나 PortfolioVisualizer 등 일반적인 도구는 전기간 정적 OLS(full-sample static OLS)로 단일 베타를 추정하는 데 그쳐, ETF의 스타일 드리프트(style drift) — 시간에 따른 팩터 노출의 변화 — 를 포착하지 못한다.
EMP(ETF Managed Portfolio)는 다수의 ETF를 하나의 포트폴리오로 묶어 운용하는 방식으로, 연금·패시브 운용에서 광범위하게 활용된다. N≈200개 ETF 비중을 직접 최적화하면 비볼록(non-convex) 고차원 문제가 되어 수렴 안정성이 떨어진다. 본 프로젝트는 이 문제를 팩터 공간과 ETF 공간으로 분리하는 2단계 프레임워크로 해결한다.
1.2 연구 질문
- 한국 ETF의 JKP 팩터 노출은 시간에 따라 어떻게 변화하는가?
- 팩터 노출이 안정적인 ETF와 불안정한 ETF를 어떻게 구별하는가?
- Time-varying beta를 활용하면 팩터 수준의 리스크를 균등하게 배분하는 EMP를 구성할 수 있는가?
- Factor Risk Parity EMP는 동일가중 EMP 대비 우수한 리스크 조정 성과를 보이는가?
1.3 분석 범위
- ETF 유니버스: 한국 ETF 194종목 (ACE, KIWOOM, PLUS, KODEX, RISE, SOL, TIGER 등)
- 분석 기간: 2020-01-03 ~ 2023-12-28 (986 거래일)
- 팩터 모형: JKP 13개 테마 팩터 + 한국 VW 시장수익률 (M=14)
- 롤링 윈도우: w ∈ {60, 120} 거래일
2 데이터
2.1 ETF 일간 수익률 행렬 — \(R_\text{etf}\)
ETF 종가(현재가)를 기준으로 일간 단순수익률을 산출한다. 상장 전 구간은 NaN으로 유지하며, ETF별 first_valid_index()로 유효 구간을 관리한다.
| 항목 | 값 |
|---|---|
| Shape | (986, 194) |
| 날짜 범위 | 2020-01-03 ~ 2023-12-28 |
| ETF 수 (N) | 194종목 |
| 상장 전 NaN 비율 | 26.1% (49,962 / 191,284 셀) |
| 제공사 | ACE, KIWOOM, PLUS, KODEX, RISE, SOL, TIGER 등 |
2.2 JKP 팩터 테마 수익률 — \(R_\text{factor}\)
Jensen, Kelly, Pedersen(JKP)의 팩터 테마 데이터를 사용한다. 한국 시장 VW-cap 기준 일간 수익률이다.
| # | 팩터 테마 | # | 팩터 테마 | |
|---|---|---|---|---|
| 1 | Accruals | 8 | Quality | |
| 2 | Debt Issuance | 9 | Seasonality | |
| 3 | Investment | 10 | Short-Term Reversal | |
| 4 | Low Leverage | 11 | Size | |
| 5 | Low Risk | 12 | Skewness (Value) | |
| 6 | Momentum | 13 | Value | |
| 7 | Profit Growth |
Shape: (988, 13), 날짜 범위: 2020-01-02 ~ 2023-12-28
2.3 한국 시장 수익률 — \(R_\text{mkt}\)
JKP 데이터베이스의 한국 VW(Value-Weighted) 시장 수익률. Shape: (987, 1). 회귀 설명변수의 첫 번째 열로 포함되어 최종 \(R_{\text{factor\_full}}\) (T × 14)를 구성한다.
2.4 데이터 정렬 및 전처리
세 데이터셋을 inner join으로 공통 날짜 기준 정렬한다.
정렬 후 기준 날짜: 986 거래일 (2020-01-03 ~ 2023-12-28). \(R_\text{factor\_full}\)은 \([R_\text{mkt} \mid R_\text{factor}]\)를 열 방향으로 연결한 (T × 14) 행렬이며, 롤링 OLS의 설명변수로 사용된다.
3 방법론: 롤링 시계열 팩터 모형
3.1 모형 명세
날짜 \(t\), 윈도우 크기 \(w\)에서 ETF \(i\)의 회귀 모형:
\[r_{i,t} = \alpha_i(t) + \boldsymbol{\beta}_i(t)^\top \mathbf{f}_t + \varepsilon_{i,t}\]
- \(r_{i,t}\): ETF \(i\)의 일간 단순수익률
- \(\mathbf{f}_t \in \mathbb{R}^{14}\): 설명변수 벡터 (한국 시장수익률 + JKP 13 테마)
- \(\alpha_i(t)\): 롤링 절편 (time-varying alpha)
- \(\boldsymbol{\beta}_i(t) \in \mathbb{R}^{14}\): 롤링 팩터 로딩 (time-varying beta)
- \(\varepsilon_{i,t}\): 고유 잔차 (idiosyncratic residual)
날짜 \(t\)에서의 OLS 추정량:
\[[\hat{\alpha}_i(t),\, \hat{\boldsymbol{\beta}}_i(t)] = \arg\min_{\alpha,\boldsymbol{\beta}} \sum_{s=t-w+1}^{t} \bigl(r_{i,s} - \alpha - \boldsymbol{\beta}^\top \mathbf{f}_s\bigr)^2\]
3.2 왜 롤링 OLS인가?
| 방법 | 문제점 |
|---|---|
| 횡단면 회귀 (날짜별) | ETF 간 팩터수익률이 동일 → 식별 불가 |
| 전기간 OLS | 정적 베타 → 스타일 드리프트 포착 불가 |
| Fama-MacBeth | 팩터 리스크 프리미엄 \(\lambda\) 추정이 목적 → 본 프로젝트와 목적 상이 |
| Rolling OLS ✓ | ETF별 time-varying beta 추정 → 적합 |
롤링 OLS는 고정 윈도우를 한 기간씩 슬라이딩하며 각 \(t\)에서 새로운 OLS를 수행한다. 이를 통해 ETF의 팩터 노출 변화를 동적으로 포착한다.
3.3 구현 세부사항
ETF별 유효 구간 처리: 각 ETF의 first_valid_index()를 기준으로, 첫 유효 관측 이후 \(w\)일이 경과한 시점(\(t \geq t_0 + w - 1\))부터 회귀를 수행한다. 그 이전 구간은 NaN으로 유지된다.
윈도우별 유효 셀 비율:
| 윈도우 | 특성 | 유효 셀 비율 |
|---|---|---|
| w = 60일 (3개월) | 빠른 반응, 노이즈 많음 | 68.3% |
| w = 120일 (6개월) | 안정성과 반응속도의 균형 (기본값) | 62.9% |
성능: NumPy np.linalg.lstsq 기반 순수 NumPy 구현으로, 윈도우당 약 5초 내 완료.
3.4 산출물 정의
| 변수 | Shape | 설명 |
|---|---|---|
ALPHA_w60 / ALPHA_w120 |
(986, 194) | 롤링 절편 (time-varying alpha) |
BETAS_w60 / BETAS_w120 |
(986, 194, 14) | 롤링 팩터 로딩 (mkt + 13 JKP 테마) |
RESID_w60 / RESID_w120 |
(986, 194) | 롤링 고유 잔차 |
4 시간가변 팩터 노출 분석
4.1 팩터 간 상관관계
팩터 테마 간 다중공선성(multicollinearity)을 확인하기 위해 JKP 13개 팩터 테마 수익률의 상관행렬을 시각화한다.
해석: Profitability–Quality, Low Risk–Quality 등 일부 테마 간 양의 상관관계가 확인된다. 그러나 전반적으로 테마 간 상관관계는 낮아 다중공선성에 의한 추정 편의는 제한적이다. Accruals, Debt Issuance, Short-Term Reversal 등은 다른 테마와 상관관계가 낮아 독립적인 팩터로 기능한다.
4.2 롤링 알파 시계열
팩터로 설명되지 않는 초과수익(잔존 알파)의 동태를 주요 ETF에 대해 시각화한다.
해석: 롤링 알파는 ETF별로 상이한 패턴을 보인다. 2020년 COVID-19 충격 이후 회복 국면(2020~2021)에서 알파의 변동성이 증가하며, 일부 섹터 ETF는 팩터 설명력이 낮은 구간에서 양의 알파를 지속하는 경향을 보인다. 이는 해당 ETF가 JKP 13개 테마 외 고유한 수익 원천을 보유함을 시사한다.
4.3 롤링 팩터 로딩 시계열
선택된 샘플 ETF에 대한 팩터 로딩 변화를 시각화하여 스타일 드리프트를 확인한다.
해석: ETF별 팩터 노출은 시간에 따라 유의미하게 변동한다. 지수 추종 ETF는 상대적으로 안정적인 베타를 보이는 반면, 섹터·테마형 ETF는 시장 환경 변화에 따라 팩터 로딩이 크게 이동한다. 이는 전기간 정적 OLS가 포착하지 못하는 스타일 드리프트의 존재를 실증한다.
5 2단계 Factor Risk Parity EMP
5.1 프레임워크 개요
N≈194개 ETF 비중을 직접 최적화하면 비볼록 고차원 문제가 된다. 이를 해결하기 위해 문제를 두 단계로 분리한다:
Stage 1 — Model Portfolio (팩터 공간)
: JKP 13개 팩터만으로 Factor Risk Parity 최적화
→ φ* ∈ ℝ¹³ (팩터별 목표 노출량)
Stage 2 — EMP Replication (ETF 공간)
: φ*를 최대한 복제하는 ETF 비중 w 탐색 (Constrained QP)
→ w* ∈ ℝ¹⁹⁴ (실현 가능한 ETF 포트폴리오)
분리의 장점:
- Stage 1: M=13 차원의 볼록(convex) 문제 → 유일해 보장, 빠른 수렴
- Stage 2: 선형 제약을 가진 이차계획법(QP) → CVXPY / CLARABEL로 해결
- \(\phi^*\)는 ETF 선택과 무관하게 독립적으로 해석 가능 (순수 팩터 레벨 목표)
- Stage 2에서 유동성·비중 제한 등 실무 제약을 자연스럽게 추가 가능
5.2 Stage 1: Factor Risk Parity (Log-Barrier 최적화)
팩터 수익률 공분산 \(\Sigma_f = \text{Cov}(R_\text{factor})\), shape: (13, 13)
팩터 포트폴리오 \(\phi \in \mathbb{R}^{13}\)의 팩터 \(k\) 리스크 기여(Risk Contribution):
\[RC_k = \phi_k \cdot (\Sigma_f \phi)_k, \quad \sum_{k=1}^{13} RC_k = \phi^\top \Sigma_f \phi\]
Factor Risk Parity 조건: \(RC_k = \sigma^2_\phi / 13\), 즉 모든 팩터의 리스크 기여가 동일.
이 조건의 볼록 완화(convex relaxation)으로 log-barrier 목적함수를 사용한다:
\[\phi^* = \arg\min_{\phi} \; \phi^\top \Sigma_f \phi - \frac{1}{13} \sum_{k=1}^{13} \ln \phi_k\]
\[\text{s.t.} \quad \mathbf{1}^\top \phi = 1, \quad \phi_k > 0 \; \forall k\]
- Solver:
scipy.optimize.minimize(SLSQP — Sequential Least-Squares Programming) - 산출물:
phi_star(42, 13) — 월별 팩터 목표 노출 시계열
log-barrier 항 \(-\frac{1}{M}\sum_k \ln \phi_k\)는 \(\phi_k \to 0\)일 때 패널티를 부과하여 팩터별 리스크 기여의 균등화를 유도한다. 이 문제는 강볼록(strictly convex)이므로 유일해가 보장된다.
5.3 Stage 2: ETF 복제 이차계획법 (Constrained QP)
날짜 \(t\)의 베타 행렬 \(B_t \in \mathbb{R}^{N \times 13}\) (N개 ETF, 13개 JKP 팩터)를 이용하여, 팩터 추적오차를 최소화하는 ETF 비중을 구한다:
\[w^* = \arg\min_{w} \; (B_t^\top w - \phi^*)^\top \Sigma_f (B_t^\top w - \phi^*)\]
\[\text{s.t.} \quad \mathbf{1}^\top w = 1, \quad 0 \le w_i \le 0.10 \; \forall i\]
- Solver: CVXPY / CLARABEL (convex QP)
- ETF 필터: 리밸런싱 시점 기준 유효관측수 ≥ 120인 ETF만 포함
- 산출물:
weights_frp(42, 194) — 월별 ETF 비중 시계열
목적함수는 팩터 공분산 \(\Sigma_f\)로 가중된 팩터 추적오차(factor tracking error)이다. 이는 절대 비중 차이가 아닌 팩터 리스크 단위에서의 복제 품질을 측정한다.
복제 잔차: \(\varepsilon_t = B_t^\top w^* - \phi^*\) — Stage 2 복제 품질의 시계열 지표.
5.4 리밸런싱 설계
| 항목 | 설정 |
|---|---|
| 리밸런싱 주기 | 월말 영업일 기준 (Business Month End) |
| 총 리밸런싱 횟수 | 42회 (2020~2023) |
| \(\Sigma_f\) 추정 | 롤링 120일 윈도우 (BETAS와 동일) |
| Stage 1 업데이트 | 매 리밸런싱 시 재계산 (\(\Sigma_f\) 변화에 따라 월별 갱신) |
| Stage 2 업데이트 | 매 리밸런싱 시 재계산 (\(B_t\), \(\phi^*\) 모두 갱신) |
| ETF 필터 | 리밸런싱 시점 기준 유효관측수 ≥ 120 |
| ETF 최대 비중 | 10% (w_max = 0.10) |
| 평균 편입 ETF 수 (EW 기준) | 138종목 |
6 백테스트 결과
6.1 전략 설정
백테스트에서 FRP-EMP를 동일가중 EW-EMP(Equal-Weight EMP)와 비교한다.
| 전략 | 설명 |
|---|---|
| FRP-EMP | 2단계 Factor Risk Parity (본 전략) |
| EW-EMP | 유효 ETF 전체 동일가중 |
6.2 성과 요약표
두 전략의 핵심 지표를 정리하면 다음과 같다 (MDD·Calmar·HHI 기준 FRP-EMP 우위):
| 지표 | FRP-EMP | EW-EMP |
|---|---|---|
| 연환산 수익률 | +7.77% | +8.44% |
| 연환산 변동성 | 8.16% | 14.96% |
| Sharpe Ratio | 0.952 | 0.564 |
| MDD | −11.58% | −29.27% |
| Calmar Ratio | 0.671 | 0.288 |
| Turnover | 0.753 | 0.013 |
| HHI (집중도) | 0.0574 | 0.0073 |
Sharpe Ratio = \((r_{\text{ann}} - r_f) / \sigma_{\text{ann}}\), 무위험수익률 \(r_f = 0\).
MDD = \(\min_t \bigl(C_t / \max_{s \le t} C_s - 1\bigr)\).
Calmar Ratio = \(r_{\text{ann}} / |\text{MDD}|\).
Turnover = \(\frac{1}{T_\text{reb}} \sum_t \|w_t - w_{t-1}\|_1\).
HHI = \(\mathbb{E}_t[\sum_i w_{i,t}^2]\) (ETF 비중 집중도).
6.3 누적 수익률 비교
FRP-EMP는 EW-EMP 대비 낮은 누적 수익률을 보이지만 수익률 경로의 변동성이 현저히 낮다. EW-EMP는 2022년 금리 급등·시장 조정 구간에서 큰 낙폭을 기록하는 반면, FRP-EMP는 팩터 리스크를 균등하게 배분함으로써 특정 팩터에 집중된 손실을 방어한다.
6.4 드로다운 경로
FRP-EMP의 최대 드로다운(MDD)은 −11.58%로, EW-EMP의 −29.27% 대비 약 17.7%p 낮다. 2022년 시장 조정 구간에서 EW-EMP는 전 자산을 동일가중으로 보유하므로 시장 전반의 하락에 그대로 노출되는 반면, FRP-EMP는 리스크 기여 균등화를 통해 하방 위험을 제한한다.
6.5 Stage 1: 팩터 목표 노출 시계열
\(\phi^*\) 시계열은 리밸런싱 시점 별 팩터 공분산 구조의 변화를 반영한다. 저변동성 팩터(Low Risk, Quality)는 상대적으로 높은 목표 노출을 유지하는 경향이 있으며, 고변동성·고상관 팩터(Momentum, Short-Term Reversal)는 리스크 패리티 조건 하에서 낮은 비중을 배분받는다. 2022년 금리 충격 구간에서는 \(\phi^*\)의 구성이 방어적으로 이동하는 패턴이 관찰된다.
6.6 Stage 2: FRP-EMP 상위 ETF 비중
Stage 2의 ETF 비중 구성은 개별 ETF가 얼마나 \(\phi^*\)를 효율적으로 복제하는지에 따라 결정된다. 채권형·저변동성 ETF가 상대적으로 높은 비중을 차지하며, 이는 Stage 1의 Low Risk·Quality 팩터 목표 노출과 정합적이다. HHI 집중도 지수 0.0574는 특정 ETF 집중 없이 분산된 포트폴리오임을 나타낸다.
6.7 리스크 기여 편차
팩터별 리스크 기여가 균등 목표(\(1/M\))에서 얼마나 이탈하는지를 나타낸다. 이탈 편차가 낮을수록 Stage 1의 리스크 패리티 조건이 잘 달성됨을 의미한다. 대부분의 리밸런싱 시점에서 편차가 작게 유지되며, 팩터 공분산 구조가 급격히 변화한 구간(2020년 COVID 충격, 2022년 금리 급등)에서 일시적으로 편차가 확대된다.
6.8 Stage 2 복제 오차 분포
복제 오차 \(\varepsilon_t\)의 분포는 ETF 포트폴리오가 팩터 목표 노출 \(\phi^*\)를 얼마나 정밀하게 복제하는지를 나타낸다. 오차의 중앙값이 0에 가깝고, 극단 오차가 제한적임을 확인할 수 있다. ETF 최대 비중 10% 제약으로 인해 일부 팩터에서 완전 복제가 어려운 구간이 존재하나, 전반적으로 Stage 2의 복제 품질은 양호하다.
7 논의
7.1 주요 발견
FRP-EMP의 리스크 조정 성과 우위는 팩터 수준의 리스크 균등 배분 원리에 기인한다. EW-EMP는 ETF 비중을 동일하게 배분하지만, ETF 간 팩터 노출과 변동성이 이질적이므로 실질적 리스크 기여는 불균등하다. 반면 FRP-EMP는 팩터 공간에서 리스크를 균등화한 후 ETF 공간으로 변환하여, 특정 팩터로의 리스크 집중을 방지한다.
| 관점 | FRP-EMP 특성 | EW-EMP 특성 |
|---|---|---|
| 리스크 관리 | 팩터 RC 균등화 | ETF 비중 균등화 (팩터 RC 불균등) |
| 수익률 | 다소 낮음 (+7.77%) | 다소 높음 (+8.44%) |
| 변동성 | 낮음 (8.16%) | 높음 (14.96%) |
| 하방 위험 | 양호 (MDD −11.58%) | 취약 (MDD −29.27%) |
| 운용 복잡성 | 높음 (2단계 최적화) | 낮음 (균등 배분) |
7.2 턴오버 고려
FRP-EMP의 평균 L1 Turnover는 0.753으로, EW-EMP의 0.013과 비교하면 현저히 높다. 월별 리밸런싱 시 \(\phi^*\)와 \(B_t\)가 모두 갱신되므로 최적 비중의 변동이 크기 때문이다. 실제 운용에서 거래비용을 고려하면 FRP-EMP의 순수익률은 감소할 수 있다. 거래비용 민감도 분석 또는 비중 변화에 페널티를 부과하는 TC-aware 리밸런싱이 후속 과제로 필요하다.
7.3 분석 한계
- 표본 기간: 2020–2023은 COVID-19 충격과 회복, 금리 급등 사이클을 포함하는 특수한 기간이다. 정상적인 시장 환경에서의 성과는 다를 수 있다.
- 거래비용 미반영: 기본 백테스트는 거래비용을 포함하지 않는다. FRP-EMP의 높은 턴오버를 고려하면 거래비용 반영 후 성과 차이가 좁아질 가능성이 있다.
- 표본 내 검증만 수행: 아웃-오브-샘플(out-of-sample) 검증이 수행되지 않았다. 2024년 이후 데이터를 활용한 사후 검증이 필요하다.
- ETF 선택 편의: CHKXP 데이터에 포함된 ETF 유니버스에 한정되며, 전체 한국 ETF 시장을 완전히 대표하지 않을 수 있다.
- 팩터 공분산 추정 오차: 롤링 120일 표본 공분산은 비정상(non-stationary) 환경에서 추정 오차가 클 수 있다. Ledoit-Wolf 수축(shrinkage) 추정 등이 대안이 될 수 있다.
7.4 확장 방향
- 윈도우 민감도 분석: w=60 vs w=120 간 베타 안정성-반응속도 trade-off 정량 비교
- 거래비용 민감도: 비중 변화에 비례한 비용 차감 후 Sharpe·Calmar 비교
- 섹터 중립 제약: Stage 2 QP에 섹터별 비중 한도 추가
- 잔차 알파 활용: 롤링 고유 잔차(RESID)를 활용한 ETF 미스프라이싱 탐지 신호 개발
- 스타일 드리프트 모니터링: 베타의 롤링 표준편차로 팩터 노출 불안정 ETF 실시간 탐지
8 결론
본 연구는 한국 ETF 시장에서 롤링 OLS 기반 시간가변 팩터 모형과 2단계 Factor Risk Parity 프레임워크를 결합하여 리스크 효율적인 EMP 전략을 구성하였다.
핵심 기여는 세 가지다:
방법론적 기여: 전기간 정적 OLS의 한계를 극복하는 롤링 팩터 모형을 통해, 한국 ETF의 시간가변 팩터 노출과 스타일 드리프트를 실증적으로 확인하였다.
알고리즘적 기여: 비볼록 고차원 EMP 최적화 문제를 Factor Risk Parity(Stage 1, 볼록 최적화)와 ETF 복제 QP(Stage 2, 이차계획법)로 분리하여, 수렴 안정성과 해석 가능성을 모두 확보하였다.
실증적 기여: FRP-EMP는 Sharpe Ratio 0.952, MDD −11.58%를 달성하여, EW-EMP(Sharpe 0.564, MDD −29.27%) 대비 리스크 조정 성과에서 명확한 우위를 보였다. 팩터 수준의 리스크 균등 배분이 ETF 포트폴리오의 리스크 효율성을 실질적으로 개선함을 실증한다.
본 프레임워크는 연금·패시브 운용에서 팩터 기반 리스크 관리 체계를 구축하는 데 직접 적용 가능하다. 나아가, 롤링 잔차를 활용한 ETF 미스프라이싱 탐지, 실시간 스타일 드리프트 모니터링 등으로 확장하여 실무적 가치를 높일 수 있다.
부록
부록 A: JKP 팩터 테마 설명
| # | 테마 | 핵심 아이디어 |
|---|---|---|
| 1 | Accruals | 발생주의 이익 vs 현금 이익 괴리 |
| 2 | Debt Issuance | 부채 조달 활동과 주가 반응 |
| 3 | Investment | 자본투자 확대와 기대수익률 관계 |
| 4 | Low Leverage | 낮은 재무 레버리지 기업의 초과수익 |
| 5 | Low Risk | 저베타·저변동성 이상 현상 |
| 6 | Momentum | 과거 수익률의 지속성 |
| 7 | Profit Growth | 이익 성장률과 미래 수익률 |
| 8 | Profitability | 수익성 지표(ROE, GP/A 등) |
| 9 | Quality | 복합 품질 지표 (재무 건전성) |
| 10 | Seasonality | 계절성·캘린더 효과 |
| 11 | Short-Term Reversal | 단기 과매도/과매수 반전 |
| 12 | Size | 시가총액 규모 효과 |
| 13 | Value | 장부가/시가 등 가치 지표 |
부록 B: 성과 지표 정의
| 지표 | 정의 |
|---|---|
| Sharpe Ratio | \((r_\text{ann} - r_f) / \sigma_\text{ann}\), 무위험수익률 \(r_f = 0\) 가정 |
| MDD | \(\min_t \bigl(C_t / \max_{s \le t} C_s - 1\bigr)\), 최대 낙폭 |
| Calmar Ratio | \(r_\text{ann} / |\text{MDD}|\), 낙폭 대비 수익률 |
| Turnover | \(\frac{1}{T_\text{reb}} \sum_t \|w_t - w_{t-1}\|_1\), 평균 L1 비중 변화 |
| HHI | \(\mathbb{E}_t[\sum_i w_{i,t}^2]\), 헤르핀달-허슈만 집중도 지수 |
부록 C: 구현 및 기술 스택
| 구분 | 선택 | 이유 |
|---|---|---|
| Stage 1 Solver | scipy.optimize.minimize (SLSQP) |
등호·부등호 제약 혼합, 소규모 M=13 차원에 적합 |
| Stage 2 Solver | CVXPY / CLARABEL | Convex QP 표준 인터페이스, 대규모 N에도 안정적 |
| 롤링 OLS | np.linalg.lstsq (NumPy) |
순수 NumPy 벡터화, 윈도우당 ~5초 |
| 팩터 공분산 | 롤링 표본 공분산 (w=120) | 단순 추정; Ledoit-Wolf 수축이 대안 |
| 데이터 저장 | Parquet (pyarrow) | 컬럼형 압축, pandas 연동 최적 |
| 시각화 | Matplotlib (정적 PNG) | 재현 가능한 고해상도 출력 (dpi=150) |